<#148#><#148#>
The allowable switches are given in the following table:
Using |~;SPMlt;;SPMlt;<#176#>|;SPMlt;arrow;SPMgt;|<#176#>| or |~;SPMgt;;SPMlt;<#177#>|;SPMlt;arrow;SPMgt;|<#177#>| is most appropriate when arrowheads are required on the sides or spokes, or when labels/breaks are required. Here ;SPMlt;arrow;SPMgt; is as in figure~??g[xyarrow.doc:f.arrow], so it can be used simply to specify the style of directional to be used. Thus |~;SPMlt;;SPMlt;<#178#><#178#>| sets each spoke as a default arrow, pointing outwards from the centre; |~;SPMlt;;SPMlt;<#679#>@<#179#>-<#179#><#679#>| suppresses the arrowhead, while |~;SPMgt;;SPMlt;<#680#>@<#180#><#180#><#680#>| uses an empty arrow along the sides. Labels and breaks are specified with |~;SPMlt;;SPMgt;<#181#>|...|<#181#>| and |~;SPMgt;;SPMgt;<#182#>|...|<#182#>|, where the |<#183#>|...|<#183#>| use the notation for a ;SPMlt;label;SPMgt;, as in figure~??g[xyarrow.doc:f.path].
When no tips or breaks are required then the switches |~;SPMlt;<#184#>|...|<#184#>| and |~;SPMgt;<#185#>|...|<#185#>| are somewhat faster, since less processing is needed. Labels can still be specified with |~;SPMlt;;SPMgt;<#186#>|...|<#186#>| and |~;SPMgt;;SPMgt;<#187#>|...|<#187#>|, but now using the kernel's ;SPMlt;place;SPMgt; notation of figure~??g[xy.doc:f.pos]. In fact any kernel code can be included using these switches. With |~;SPMlt;;SPMgt;| the current p and c are the centre and vertex respectively, while for |~;SPMgt;;SPMgt;| they are the current vertex and the previous vertex. (The connection from vertex |;SPMquot;|;SPMlt;number;SPMgt;|;SPMquot;| to vertex |;SPMquot;1;SPMquot;| is done last.) The pyramid above is an example of how this can be used. Both |~;SPMlt;<#188#>|...|<#188#>| and |~;SPMlt;;SPMlt;<#189#>|;SPMlt;arrow;SPMgt;|<#189#>| can be specified together, but only the last will actually be used; similarly for |~;SPMgt;<#190#>|...|<#190#>| and |~;SPMgt;;SPMlt;<#191#>|;SPMlt;arrow;SPMgt;|<#191#>|.
Use of the |~=<#208#>|...|<#208#>| switch was described earlier. When using the |~:<#209#>|...|<#209#>| more can be done than just setting the base. In fact any kernel code can be supplied here. It is processed prior to any other part of the polygon. The graphics state has c at the centre of the polygon, p at the origin of coordinates within the picture and has basis unchanged from what has previously been established. The current point c will be reset to the centre following any code interpreted using this switch.
2 Note that |~!| was appended by |@@|, in order to indicate the end of the braced tokens. The macro |@| is the main parser, with |@SPOKES@| and |@SIDES@| handling the subcases for |~;SPMlt;| and |~;SPMgt;|.
(
@@<#817#>
@@SPOKES@<#818#>
@@SIDES@<#819#>
3 A further simplification exists for sides and spokes without ;SPMlt;arrow;SPMgt;s. If ;SPMlt;tok;SPMgt; is a single character then |~;SPMgt;|;SPMlt;tok;SPMgt;, |~;SPMgt;<#230#>|;SPMlt;tok;SPMgt;|<#230#>|, |~;SPMgt;<#701#><#231#>|;SPMlt;tok;SPMgt;|<#231#><#701#>| all specify the directional |<#232#>|;SPMlt;tok;SPMgt;|<#232#>|; similarly with the |~;SPMlt;| switch. On the other hand, compound directionals require all the braces, e.g. |~;SPMgt;<#702#><#233#>--<#233#><#702#>| and |~;SPMgt;<#703#>2<#234#>.<#234#><#703#>|.
2 This is achieved with the macro |@#1#2#3#4@!#5| which handles the bare ;SPMlt;tok;SPMgt; case by adding braces around ;SPMlt;tok;SPMgt; which has been passed as |#3|, preceeding it with |#2|. This is then | )
3
After all switches have been processed, remaining tokens are used to specify the ;SPMlt;object;SPMgt; for each vertex. Such tokens will be used directly after a ||, so can include object ;SPMlt;modifier;SPMgt;s as in figure~??g[xy.doc:f.object]. If an ;SPMlt;object;SPMgt; has already been specified, using the |~*| switch, then the following message will be written to the TEX log:
3